import Axios from 'axios'
import store from '@/store'
import router from '@/router'
import { Message } from 'element-ui'

const request = Axios.create({
  baseURL: 'http://127.0.0.1:8000/api'
})

// 定义请求拦截器
request.interceptors.request.use(function (config) {
  // 在发起请求时，统一携带请求头和token值
  if (store.state.token) {
    config.headers.Authorization = `Bearer ${store.state.token}`
  }
  return config
}, function (error) {
  // 请求发起前的代码，如果有异常报错,会直接进入这里
  return Promise.reject(error)
})

request.interceptors.response.use(function (response) {
  // 2xx 范围内的状态码都会触发该函数。
  return response
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  if (error.response && error.response.status === 401) {
    // token过期或未登录
    store.commit('updateToken', '')
    store.commit('updateUserInfo', {})

    // 跳转到登录页面
    if (router.currentRoute.path !== '/login') {
      router.push('/login')
      // 弹出提示信息
      Message.error('请登录')
    }
  }

  return Promise.reject(error)
})

// 导出axios自定义函数
export default request
